#pragma once

#include "PlatformManager.h"
#include "Heap.h"
#include "definitions.h"
#include "Structures.h"
#include <vector>

namespace Proton 
{
	namespace Managers
	{
		class MemoryManager
		{
			Heap* pHead;
			U32 memoryLimitMB;
			void newHeap(U32 _heapSizeInMB);

			PlatformManager* pPlatform;
		public:
			MemoryManager(U32 _heapSizeInMB, U32 _memoryLimitMB);
			virtual ~MemoryManager(void);

			void* allocate(size_t sizeInBytes);
			void deallocate(void* ptr);
			
			U32 getFreeMemory();
			U32 getUsedMemory();
			U32 getTotalMemory();
		};		
	}
}

